
* @file Tests on tenacitas::date

#include <tenacitas.tester/test.h>
#include <tenacitas.tester/test_printer.h>
#include <tenacitas.basic/ptr.h>
#include <tenacitas.basic/fault.h>
#include <sstream>

#include "date.h"
#include "algorithm.h"

using namespace std;
using namespace tenacitas;

namespace tenacitas {
    namespace time_tests {

	* Tests the creation of a valid tenacitas::date_date
	class t000000 : public tenacitas::test {

	public:
	    t000000 ();
	    ~t000000();
	    void operator ( ) ( ptr<tenacitas::test_printer> print )
		throw ( fault );
	};
	    

	* Tests the creation of a tenacitas::date_date using today
	class t000001 : public tenacitas::test {

	public:
	    t000001 ();
	    ~t000001();
	    void operator ( ) ( ptr<tenacitas::test_printer> print )
		throw ( fault );
	};
	    

	* Tests the creation of a tenacitas::date_date on 30-feb-2008
	class t000002 : public tenacitas::test {

	public:
	    t000002 ();
	    ~t000002();
	    void operator ( ) ( ptr<tenacitas::test_printer> print )
		throw ( fault );
	};

	* Tests the creation of a tenacitas::date_date on 29-feb-2007
	class t000003 : public tenacitas::test {

	public:
	    t000003 ();
	    ~t000003();
	    void operator ( ) ( ptr<tenacitas::test_printer> print )
		throw ( fault );
	};

	* Tests the creation of a tenacitas::date_date on 31-abr-2007
	class t000004 : public tenacitas::test {

	public:
	    t000004 ();
	    ~t000004();
	    void operator ( ) ( ptr<tenacitas::test_printer> print )
		throw ( fault );
	};

	* Tests the creation of a tenacitas::date_date on 31-jun-2007
	class t000005 : public tenacitas::test {

	public:
	    t000005 ();
	    ~t000005();
	    void operator ( ) ( ptr<tenacitas::test_printer> print )
		throw ( fault );
	};

	* Tests the creation of a tenacitas::date_date on 31-sep-2007
	class t000006 : public tenacitas::test {

	public:
	    t000006 ();
	    ~t000006();
	    void operator ( ) ( ptr<tenacitas::test_printer> print )
		throw ( fault );
	};

	* Tests the creation of a tenacitas::date_date on 31-nov-2007
	class t000007 : public tenacitas::test {

	public:
	    t000007 ();
	    ~t000007();
	    void operator ( ) ( ptr<tenacitas::test_printer> print )
		throw ( fault );
	};

	* Tests the creation of a tenacitas::date_date on 31-sep-1581
	class t000008 : public tenacitas::test {

	public:
	    t000008 ();
	    ~t000008();
	    void operator ( ) ( ptr<tenacitas::test_printer> print )
		throw ( fault );
	};

	* Tests the creation of a tenacitas::date_date on 29-feb-2008
	class t000009 : public tenacitas::test {

	public:
	    t000009 ();
	    ~t000009();
	    void operator ( ) ( ptr<tenacitas::test_printer> print )
		throw ( fault );
	};

	* Tests if the year in tenacitas::date_date on 29-feb-2008 is a leap 
	* year
	class t000010 : public tenacitas::test {

	public:
	    t000010 ();
	    ~t000010();
	    void operator ( ) ( ptr<tenacitas::test_printer> print )
		throw ( fault );
	};

	* Tests if the year in tenacitas::date_date on 10-feb-2008 is not a 
	* leap year
	class t000011 : public tenacitas::test {

	public:
	    t000011 ();
	    ~t000011();
	    void operator ( ) ( ptr<tenacitas::test_printer> print )
		throw ( fault );
	};

	* Tests to add 1 day to tenacitas::date_date on 10-feb-2006, creating
	* another date
	class t000012 : public tenacitas::test {

	public:
	    t000012 ();
	    ~t000012();
	    void operator ( ) ( ptr<tenacitas::test_printer> print )
		throw ( fault );
	};

	* Tests to add 365 days to tenacitas::date_date on 10-feb-2006, creating
	* another date
	class t000013 : public tenacitas::test {

	public:
	    t000013 ();
	    ~t000013();
	    void operator ( ) ( ptr<tenacitas::test_printer> print )
		throw ( fault );
	};


	* Tests the calculation of the weekday for tenacitas::date_date 
	* on 28-abr-1999
	class t000014 : public tenacitas::test {

	public:
	    t000014 ();
	    ~t000014();
	    void operator ( ) ( ptr<tenacitas::test_printer> print )
		throw ( fault );
	};

	* Tests the calculation of the weekday for tenacitas::date_date 
	* on today
	class t000015 : public tenacitas::test {

	public:
	    t000015 ();
	    ~t000015();
	    void operator ( ) ( ptr<tenacitas::test_printer> print )
		throw ( fault );
	};

	* Tests if a tenacitas::date_date on 20-sep-2008 is in a weekend
	class t000016 : public tenacitas::test {

	public:
	    t000016 ();
	    ~t000016();
	    void operator ( ) ( ptr<tenacitas::test_printer> print )
		throw ( fault );
	};

	* Tests if a tenacitas::date_date on 18-may-2009 is not in a weekend
	class t000017 : public tenacitas::test {

	public:
	    t000017 ();
	    ~t000017();
	    void operator ( ) ( ptr<tenacitas::test_printer> print )
		throw ( fault );
	};

	* Tests to subtract 1 day to tenacitas::date_date on 10-feb-2006, 
	* creating another date
	class t000018 : public tenacitas::test {

	public:
	    t000018 ();
	    ~t000018();
	    void operator ( ) ( ptr<tenacitas::test_printer> print )
		throw ( fault );
	};

	* Tests to subtract 365 days to tenacitas::date_date on 10-feb-2006, 
	* creating another date
	class t000019 : public tenacitas::test {

	public:
	    t000019 ();
	    ~t000019();
	    void operator ( ) ( ptr<tenacitas::test_printer> print )
		throw ( fault );
	};

	* Tests to calculate the amount of days between 16-feb-1966 and 22-feb-1966
	class t000020 : public tenacitas::test {

	public:
	    t000020 ();
	    ~t000020();
	    void operator ( ) ( ptr<tenacitas::test_printer> print )
		throw ( fault );
	};

	* Tests to calculate the amount of days between 16-feb-1966 and 05-may-2006
	class t000021 : public tenacitas::test {

	public:
	    t000021 ();
	    ~t000021();
	    void operator ( ) ( ptr<tenacitas::test_printer> print )
		throw ( fault );
	};

	* Tests to calculate the amount of days between 18-may-2008 and 05-may-2006
	class t000022 : public tenacitas::test {

	public:
	    t000022 ();
	    ~t000022();
	    void operator ( ) ( ptr<tenacitas::test_printer> print )
		throw ( fault );
	};

	* Tests to add 30 days to tenacitas::date_date on 10-mar-2006, 
	* creating another date
	class t000025 : public tenacitas::test {

	public:
	    t000025 ();
	    ~t000025();
	    void operator ( ) ( ptr<tenacitas::test_printer> print )
		throw ( fault );
	};

	* Calculate the weekday for 5-may-2006
	class t000026 : public tenacitas::test {

	public:
	    t000026 ();
	    ~t000026();
	    void operator ( ) ( ptr<tenacitas::test_printer> print )
		throw ( fault );
	};

	* Calculate the weekday for 4-may-2006
	class t000027 : public tenacitas::test {

	public:
	    t000027 ();
	    ~t000027();
	    void operator ( ) ( ptr<tenacitas::test_printer> print )
		throw ( fault );
	};

	* Tries to create a \p day with 0 
	class t000028 : public tenacitas::test {

	public:
	    t000028 ();
	    ~t000028();
	    void operator ( ) ( ptr<tenacitas::test_printer> print )
		throw ( fault );
	};

	* Tries to create a \p day with 32
	class t000029 : public tenacitas::test {

	public:
	    t000029 ();
	    ~t000029();
	    void operator ( ) ( ptr<tenacitas::test_printer> print )
		throw ( fault );
	};

	* Tries to create a \p day with 46
	class t000030 : public tenacitas::test {

	public:
	    t000030 ();
	    ~t000030();
	    void operator ( ) ( ptr<tenacitas::test_printer> print )
		throw ( fault );
	};

	* Tries to create a \p day with 19
	class t000031 : public tenacitas::test {

	public:
	    t000031 ();
	    ~t000031();
	    void operator ( ) ( ptr<tenacitas::test_printer> print )
		throw ( fault );
	};

	* Tries to create a \p month with 0
	class t000032 : public tenacitas::test {

	public:
	    t000032 ();
	    ~t000032();
	    void operator ( ) ( ptr<tenacitas::test_printer> print )
		throw ( fault );
	};

	* Tries to create a \p month with 13
	class t000033 : public tenacitas::test {

	public:
	    t000033 ();
	    ~t000033();
	    void operator ( ) ( ptr<tenacitas::test_printer> print )
		throw ( fault );
	};

	* Tries to create a \p month with 57
	class t000034 : public tenacitas::test {

	public:
	    t000034 ();
	    ~t000034();
	    void operator ( ) ( ptr<tenacitas::test_printer> print )
		throw ( fault );
	};

	* Tries to create a \p month with 7
	class t000035 : public tenacitas::test {

	public:
	    t000035 ();
	    ~t000035();
	    void operator ( ) ( ptr<tenacitas::test_printer> print )
		throw ( fault );
	};

	* Tries to create a \p year with 1001
	class t000036 : public tenacitas::test {

	public:
	    t000036 ();
	    ~t000036();
	    void operator ( ) ( ptr<tenacitas::test_printer> print )
		throw ( fault );
	};

	* Tries to create a \p year with 1590
	class t000037 : public tenacitas::test {

	public:
	    t000037 ();
	    ~t000037();
	    void operator ( ) ( ptr<tenacitas::test_printer> print )
		throw ( fault );
	};
	    
    }
}
